package com.bdqn.qnnews.common.redis.config;

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author xlzhang
 * @date 2024/1/3 16:08
 */
@Configuration
public class QnRedisAutoConfiguration {
    /**
     * 在容器中注入工具类对象
     * @param template 官方依赖提供的操作模板对象
     * @return
     */
    //@Bean
    //public RedisUtils redisUtils(@Autowired StringRedisTemplate template){
    //    return new RedisUtils(template);
    //}

    /**
     * 配置redisson
     * @param prop 使用springboot官方自动装配的配置属性绑定，需要在核心配置中间中设置参数
     * @return
     */
    @Bean
    @ConditionalOnClass(RedissonClient.class)
    public RedissonClient redisson(@Autowired RedisProperties prop){
        // 拼接redis连接地址
        // redis://10.0.0.5:6379
        String redisUrl = String.format("redis://%s:%s",prop.getHost(),prop.getPort());
        // 创建配置对象 import org.redisson.config.Config;
        final Config config = new Config();
        // 集群模式
        // config.useClusterServers().addNodeAddress("127.0.0.1:7004", "127.0.0.1:7001");

        // 设置地址、连接密码、数据库编号等，端口使用默认的6379
        config.useSingleServer()
                .setAddress(redisUrl)
                .setPassword(prop.getPassword())
                .setDatabase(prop.getDatabase());
        return Redisson.create(config);
    }
}
